package Day_0223.Spring;

/**
 * @author zxc
 * @date 2023/02/23 21:49
 **/
public class Bean_Assemble {
    public static void main(String[] args) {
        /**
         * 谈一谈对于Bean装配的理解
         * ===》
         * 1.bean装配的定义
         * （1）装配，或bean 装配是指在Spring 容器中把bean组装到一起，
         * （2）前提是，容器需要知道bean的依赖关系，如何通过依赖注入来把它们装配到一起。
         *
         * 2.bean自动装配的定义
         * （1）在Spring框架中，在配置文件中设定bean的依赖关系是一个很好的机制，
         * （2）Spring 容器能够自动装配相互合作的bean，这意味着容器不需要和配置，能通过Bean工厂自动处理bean之间的协作。
         * ===》
         * 这意味着 Spring可以通过向Bean Factory中注入的方式，自动搞定bean之间的依赖关系。
         * 自动装配可以设置在每个bean上，也可以设定在特定的bean上。
         *
         * 3.解释不同方式的自动装配，spring 自动装配 bean 有哪些方式？
         * 1）在spring中，对象无需自己查找或创建与其关联的其他对象，
         * 由容器负责把需要相互协作的对象引用赋予各个对象，使用autowire来配置自动装载模式。
         * 2）在Spring框架xml配置中共有5种自动装配：
         * （1）no ：
         *  默认的方式是不进行自动装配的，通过手工设置ref属性来进行装配bean。
         * （2）byName ：
         *  通过bean的名称进行自动装配，如果一个bean的 property 与另一bean 的name 相同，就进行自动装配。
         * （3）byType ：
         *  通过参数的数据类型进行自动装配。
         * （4）constructor ：
         *  利用构造函数进行装配，并且构造函数的参数通过byType进行装配。
         * （5）autodetect ：
         *  自动探测，如果有构造方法，通过 construct的方式自动装配，否则使用 byType的方式自动装配。
         *
         * 4.自动装配的局限性
         * （1）重写 ：
         *  仍需用配置来定义依赖，意味着总要重写自动装配。
         * （2）基本数据类型 ：
         *  不能自动装配简单的属性，如基本数据类型，String字符串，和类。
         * （3）模糊特性 ：
         *  自动装配不如显式装配精确，如果有可能，建议使用显式装配。
         *
         */
    }
}
